#ifndef IPERSPECTIVE_H
#define IPERSPECTIVE_H

#include <QtCore/QList>

QT_BEGIN_NAMESPACE
class QAction;
class QSettings;
class QToolBar;
QT_END_NAMESPACE

namespace core
{
class IEditorArea;
class MimeType;

class IPerspective
{
public:
    virtual QList<QAction* > getStaticActions(
        const QString& menuId) const = 0;
    virtual QList<QAction* > getContextActions(
        const QString& menuId) const = 0;
    virtual QList<QToolBar* > getStaticToolBars() const = 0;
    virtual QList<QToolBar* > getContextToolBars() const = 0;

    virtual QList<QAction* > getPerspectiveEnsuringActions() const = 0;

    virtual IEditorArea* getEditorArea() const = 0;

    virtual bool canOpen(const core::MimeType& type) const = 0;

    virtual void handleIsCurrentChanged(bool current) = 0;

    virtual void readSettings(QSettings* settings) = 0;
    virtual void writeSettings(QSettings* settings) const = 0;

protected:
    virtual ~IPerspective() {}
};

} // namespace core

#endif
